<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/4/24/024
 * Time: 20:12
 */

namespace app\admin\validate;

class AdminValidate extends \think\Validate
{

    const SCENE_ADD = 'add'; //添加管理员
    const SCENE_EDIT = 'edit'; //添加管理员
    const SCENE_LOGIN = 'login'; //管理员登陆
    const SCENE_MODIFY_PASSWORD = 'modify_password'; //修改密码


    public $password_old; //原密码
    public $password_confirm; //确认新密码

    protected $rule = [
        'adminRole' => 'require|number',
        'name'  =>  'require|isAdmin',
        'pwd' =>  'require|isPwd',
        'pwd2' =>  'require', 
    ];


    protected $message  = [
        'adminRole.require' => '角色必须',
        'name.unique' => '账号已存在',
        'pwd.require' => '密码不能为空',
        'pwd2.require' => '原密码不能为空',
        //'pwd2.checkPwd' => '两次密码不一致233',
    ];
    
    //场景
    protected $scene  = [
       self::SCENE_ADD => ['adminRole', 'name', 'pwd', 'pwd2'],
       self::SCENE_LOGIN => ['name', 'pwd'],
       self::SCENE_MODIFY_PASSWORD => ['password_old', 'password', 'password_confirm'],
    ];
    
    // 长度在6-16之间，只能包含字母、数字和下划线。
    public function isPwd($value) {
        $reg = "/[0-9a-zA-Z_]{6,16}$/";
        return preg_match($reg, $value) ? true : '密码长度在6-16之间，只能包含字母、数字和下划线';
    }
    
    //校验密码是否一致
    public function checkPwd($value, $pwd){

        return strcmp($value, $pwd) ? '两次密码不一致' : true;
    }
    
    
    
    // 管理员账号，以字母开头，长度在4-30之间，只能包含字母、数字和下划线。
    public function isAdmin($value) {
        $reg = "/[0-9a-zA-Z_]{4,30}$/";
        return preg_match($reg, $value) ? true : '管理员账号，以字母开头，长度在4-30之间，只能包含字母、数字和下划线';
    }

}